package view;

import Demo.JDBC;
import bean.Course;
import bean.Student;
import bean.Teacher;
import bean.User;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 34255
 * Date: 2024-09-16
 * Time: 14:37
 */
public class AdministratorView<dropStudent> {
    public static Scanner input = new Scanner(System.in);
    /**
     * 学生菜单页面
     */
    public static void menu(){
        System.out.println("**************      欢迎来管理员回到到学生选课系统       ****************");
        System.out.println("**************         请选择您要操作的模块            ****************");
        System.out.println("*************           0 -- 退出系统                ****************");
        System.out.println("*************           1 -- 学生模块                ****************");
        System.out.println("*************           2 -- 教师模块                ****************");
        System.out.println("*************           3 -- 课程模块                 ****************");
        System.out.println("*********************************************************************");
    }

    /**
     * 学生页面操作选择
     * @param user 指定操作对象
     */
    public static void Administrator_Operation(User user) throws Exception{
        int operation = 0;
        while(true){
            menu();
            System.out.println("请选择你的操作");
            operation = input.nextInt();
            switch (operation){
                case 0:
                    System.out.println("退出系统成功");
                    return;
                case 1:
                    //学生模块
                    studentModule();
                    break;
                case 2:
                    //老师模块
                    teacherModule();
                    break;
                case 3:
                    //课程模块
                    courseModule();
                    break;
                default:
                    System.out.println("功能选择错误,请重新选择");
                    break;
            }
        }
    }

    public static void student_Menu(){
        System.out.println("**************      欢迎来管理员来到学生功能模块       ****************");
        System.out.println("**************         请选择您要执行的操作           ****************");
        System.out.println("*************           0 -- 退出当前功能模块        ****************");
        System.out.println("*************           1 -- 新建学生               ****************");
        System.out.println("*************           2 -- 删除学生               ****************");
        System.out.println("*************           3 -- 修改学生信息            ****************");
        System.out.println("*************           4 -- 查询学生信息            ****************");
        System.out.println("*********************************************************************");
    }

    public static void teacher_Menu(){
        System.out.println("**************      欢迎来管理员来到教师功能模块       ****************");
        System.out.println("**************         请选择您要执行的操作           ****************");
        System.out.println("*************           0 -- 退出当前功能模块        ****************");
        System.out.println("*************           1 -- 新建教师               ****************");
        System.out.println("*************           2 -- 删除教师               ****************");
        System.out.println("*************           3 -- 修改教师信息            ****************");
        System.out.println("*************           4 -- 查询教师信息            ****************");
        System.out.println("*********************************************************************");
    }

    public static void course_Menu(){
        System.out.println("**************      欢迎来管理员来到课程功能模块       ****************");
        System.out.println("**************         请选择您要执行的操作           ****************");
        System.out.println("*************           0 -- 退出当前功能模块        ****************");
        System.out.println("*************           1 -- 新建课程               ****************");
        System.out.println("*************           2 -- 删除课程               ****************");
        System.out.println("*************           3 -- 修改课程信息            ****************");
        System.out.println("*************           4 -- 查询课程信息            ****************");
        System.out.println("*********************************************************************");
    }

    public static void studentModule() throws Exception{
        int operation = 0;
        while(true){
            student_Menu();
            System.out.println("请选择你的操作");
            operation = input.nextInt();
            switch (operation){
                case 0:
                    System.out.println("退出模块成功");
                    return;
                case 1:
                    //新建学生
                    JDBC.addStudent(addStudentInfo());
                    break;
                case 2:
                    //删除学生
                    JDBC.dropStudent(dropStudentInfo());
                    break;
                case 3:
                    //修改学生信息
                    JDBC.alterStudent(alterStudentInfo());
                    break;
                case 4:
                    //查询学生信息
                    JDBC.selectStudent();
                    break;
                default:
                    System.out.println("功能选择错误,请重新选择");
                    break;
            }
        }
    }

    public static void teacherModule() throws Exception{
        int operation = 0;
        while(true){
            teacher_Menu();
            System.out.println("请选择你的操作");
            operation = input.nextInt();
            switch (operation){
                case 0:
                    System.out.println("退出模块成功");
                    return;
                case 1:
                    //新建教师
                    JDBC.addTeacher(addTeacherInfo());
                    break;
                case 2:
                    //删除教师
                    JDBC.dropTeacher(dropTeacherInfo());
                    break;
                case 3:
                    //修改教师信息
                    JDBC.alterTeacher(alterTeacherInfo());
                    break;
                case 4:
                    //查询教师信息
                    JDBC.selectTeacher();
                    break;
                default:
                    System.out.println("功能选择错误,请重新选择");
                    break;
            }
        }
    }

    public static void courseModule() throws Exception{
        int operation = 0;
        while(true){
            course_Menu();
            System.out.println("请选择你的操作");
            operation = input.nextInt();
            switch (operation){
                case 0:
                    System.out.println("退出模块成功");
                    return;
                case 1:
                    //新建课程
                    JDBC.addTCourse(addCourseInfo());
                    break;
                case 2:
                    //删除课程
                    JDBC.dropCourse(dropCourseInfo());
                    break;
                case 3:
                    //修改课程信息
                    JDBC.alterCourse(alterCourseInfo());
                    break;
                case 4:
                    //查询课程信息
                    JDBC.selectCourse();
                    break;
                default:
                    System.out.println("功能选择错误,请重新选择");
                    break;
            }
        }
    }

    public static Student addStudentInfo(){
        System.out.println("请根据以下提示填写新建学生的信息");
        System.out.println("请输入新建学生姓名");
        String name = input.next();
        System.out.println("请输入新建学生性别");
        String gender = input.next();
        System.out.println("请输入新建学生年龄");
        int age = input.nextInt();
        System.out.println("请输入新建学生班级号");
        int classNum = input.nextInt();
        return new Student(name,gender,age,classNum);
    }

    public static Student dropStudentInfo(){
        System.out.println("请根据以下提示输入要删除学生的信息");
        System.out.println("请输入删除的学生账号");
        int accountNum = input.nextInt();
        return new Student(accountNum);
    }

    public static Student alterStudentInfo(){
        System.out.println("请根据以下提示填写要修改的学生的信息");
        System.out.println("请输入修改的学生账号");
        int accountNum = input.nextInt();
        System.out.println("请输入修改后的学生姓名");
        String name = input.next();
        System.out.println("请输入修改后的学生性别");
        String gender = input.next();
        System.out.println("请输入修改后的学生年龄");
        int age = input.nextInt();
        System.out.println("请输入修改后的学生班级号");
        int classNum = input.nextInt();
        return new Student(accountNum,name,gender,age,classNum);
    }

    public static Teacher addTeacherInfo(){
        System.out.println("请根据以下提示填写新建教师的信息");
        System.out.println("请输入新建教师姓名");
        String name = input.next();
        System.out.println("请输入新建教师性别");
        String gender = input.next();
        System.out.println("请输入新建教师年龄");
        int age = input.nextInt();
        System.out.println("请输入新建教师职称");
        String rank = input.next();
        System.out.println("请输入新建教师联系方式");
        long phoneNum = input.nextLong();
        return new Teacher(name,gender,age,rank,phoneNum);
    }

    public static Teacher dropTeacherInfo(){
        System.out.println("请根据以下提示输入要删除教师的信息");
        System.out.println("请输入删除的教师账号");
        int accountNum = input.nextInt();
        return new Teacher(accountNum);
    }

    public static Teacher alterTeacherInfo(){
        System.out.println("请根据以下提示填写要修改的教师的信息");
        System.out.println("请输入修改的教师账号");
        int accountNum = input.nextInt();
        System.out.println("请输入修改后的教师姓名");
        String name = input.next();
        System.out.println("请输入修改后的教师性别");
        String gender = input.next();
        System.out.println("请输入修改后的教师年龄");
        int age = input.nextInt();
        System.out.println("请输入修改后教师职称");
        String rank = input.next();
        System.out.println("请输入修改后教师联系方式");
        long phoneNum = input.nextLong();
        return new Teacher(accountNum,name,gender,age,rank,phoneNum);
    }


    public static Course addCourseInfo(){
        System.out.println("请根据以下提示填写新建课程的信息");
        System.out.println("请输入新建课程名称");
        String name = input.next();
        System.out.println("请输入新建课程的教学地点");
        String classroom = input.next();
        System.out.println("请输入新建课程的教学时间");
        String time = input.next();
        System.out.println("请输入新建课程的学分");
        int credit = input.nextInt();
        System.out.println("请输入新建课程任教老师的帐号");
        int TeacherAccountNum = input.nextInt();
        return new Course(name,classroom,time,credit,TeacherAccountNum);
    }

    public static Course dropCourseInfo(){
        System.out.println("请根据以下提示输入要删除课程的信息");
        System.out.println("请输入删除的课程代号");
        int code = input.nextInt();
        return new Course(code);
    }

    public static Course alterCourseInfo(){
        System.out.println("请根据以下提示填写修改课程的信息");
        System.out.println("请输入你要修改的课程代号");
        int code = input.nextInt();
        System.out.println("请输入修改课程名称");
        String name = input.next();
        System.out.println("请输入修改课程的教学地点");
        String classroom = input.next();
        System.out.println("请输入修改课程的教学时间");
        String time = input.next();
        System.out.println("请输入修改课程的学分");
        int credit = input.nextInt();
        System.out.println("请输入修改课程任教老师的帐号");
        int TeacherAccountNum = input.nextInt();
        System.out.println("请输入修改要课程状态");
        String state = input.next();
        return new Course(code,name,classroom,time,credit,TeacherAccountNum,state);
    }
}
